package socket.udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

/**
 * 服务器端，实现基于UDP的用户登录
 */
public class UDPServer {
    public static void main(String[] args) {
        try {
            //1、创建服务器端datagramSocket,指定端口
            DatagramSocket socket = new DatagramSocket(8800);
            //2、创建数据报，用于接受客户端发送的数据
            byte[] data = new byte[1024];//创建字节数据，指定接受的数据报大小
            DatagramPacket packet = new DatagramPacket(data, data.length);
            System.out.println("****我是服务器，等待客户端发送数据");
            //3、接受客户端发送的数据
            socket.receive(packet);//此方法在接受到数据报之前会一起阻塞
            //4、读取数据
            String info = new String(data, 0, packet.getLength());
            System.out.println("我是服务器，客户端说："+info);

            /**
             * 响应客户端数据
             */
            //1、定义客户端的地址、端口、数据
            InetAddress address = packet.getAddress();
            int port = packet.getPort();
            byte[] data2 = ("欢迎您！" + info.split(";")[0].split(":")[1]).getBytes();
            packet = new DatagramPacket(data2, data2.length, address, port);
            socket.send(packet);
            socket.close();
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
